<?php

namespace app\admin\controller\subject;

//引入进来基类控制器
use app\common\controller\Backend;

/**
 * 回收站控制器
 */
class Ordrecycle extends Backend
{
    //设置关联查询
    protected $relationSearch = true;

    //当前模型
    protected $model = null;

    //构造函数
    public function __construct()
    {
        parent::__construct();

        //将控制器和模型关联
        $this->model = model('Subject.Order');
    }

    // 列表
    public function index()
    {

        //将请求当中所有的参数去除html标签，去掉两边空白
        $this->request->filter(['strip_tags', 'trim']);

        // 判断是否有ajax
        if ($this->request->isAjax()) {
            //获取表格所提交过来筛选和排序的一些参数
            // 偏移量：$offset， 每页显示多少：$limit
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();

            // 表格需要两个返回值参数 总条数，分页的数据
            // 总条数
            $total = $this->model
                ->onlyTrashed()
                ->with(['business'])
                ->where($where)
                ->order($sort, $order)
                ->count();

            // 每一页展示的数据
            $list = $this->model
                ->onlyTrashed()
                ->with(['business'])
                ->where($where)
                ->order($sort, $order)
                ->limit($offset, $limit)
                ->select();

            // 组装数据
            $result = [
                'total' => $total,
                'rows' => $list,
            ];

            // 返回json格式数据给ajax
            return json($result);
        }

        // 模板渲染
        return $this->view->fetch();
    }

    // 恢复
    public function restore($ids = null)
    {
        // 查询id数据是否存在，并且是只包含软删除的数据
        // where：查单条；whereIn：查多条
        $rows = $this->model->withTrashed()->whereIn('id', $ids)->select();

        // 如果不存在
        if (!$rows) {
            $this->error(__('No Results were found'));
            exit;
        }

        // 更新课程表，恢复数据
        $result = $this->model->withTrashed()->whereIn('id', $ids)->update(['deletetime' => NULL]);

        // 如果更新失败
        if ($result === FALSE) {
            $this->error('恢复数据失败');
            exit;
        } else {
            $this->success('恢复数据成功');
            exit;
        }
    }

    // 销毁
    public function destroy($ids = null)
    {
        // 查询id数据是否存在，并且是只包含软删除的数据
        $rows = $this->model->withTrashed()->whereIn('id', $ids)->select();

        // 如果不存在
        if (!$rows) {
            $this->error(__('No Results were found'));
            exit;
        }

        // 删除图片
        //要从数据源中提取出thumbs这个字段的值
        $thumbs = array_column($rows, "thumbs");
        //去空和去重
        $thumbs = array_filter($thumbs);
        $thumbs = array_unique($thumbs);

        // 删除章节的视频

        // 真实删除
        $result = $this->model->withTrashed()->whereIn('id', $ids)->delete(true);

        // 如果删除失败
        if ($result  === FALSE) {
            $this->error('真实删除失败');
            exit;
        } else {
            //删除图片
            if (!empty($thumbs)) {
                //循环遍历
                foreach ($thumbs as $item) {
                    //如果图片存在就删除掉
                    is_file("." . $item) && @unlink("." . $item);
                }
            }

            $this->success('真实删除数据成功');
            exit;
        }
    }
}
